package reflect;

import java.lang.reflect.Field;

public class ReflectDemo11 {
    public static void main(String[] args) throws Exception{
        /*
         * 访问对象的私有属性
         * 1. 加载 Class 对象
         * 2. 找到 属性
         * 3. 反射创建对象，读取对象的属性
         *    更改对象的属性
         */
        Class cls = Class.forName("reflect.Foo");
        //Field 字段，成员变量
        // getDeclaredField(名字) 按照名称查找，指定的 属性
        Field field = cls.getDeclaredField("name");
        //field 代表找到的属性
        Object obj = cls.newInstance();
        //在读取属性前，打开访问权限
        field.setAccessible(true);
        //读取属性的值
        Object value = field.get(obj);
        //value 就是属性的值
        System.out.println(value);
        //设置属性的值
        field.set(obj, "Jerry"); //把属性的值改为Jerry
        System.out.println(obj);
    }
}
